<?php
include_once ('main.class.php');
$token = $_GET['token'];
$main = new main();
$userInfo = $main->getUserInfo($token);
if ($userInfo === false) die;
$gachaToken = $main->ifUrl($token);
$filePath = "data/" . $userInfo["data"]["uid"] . ".json";
// 判断是否有该目录
if (file_exists($filePath) === false) {
    echo json_encode(array(
        "status" => false,
        // 正经： 抽卡数据强制更新错误，服务器没有关于【{$userInfo["data"]["nickName"]}|UID:{$userInfo["data"]["uid"]}】的文件，请不要直接调用接口或先去普通获取一次再使用强制更新
        "msg" => "博士，阿米娅没有找到现存的关于【{$userInfo["data"]["nickName"]}|UID:{$userInfo["data"]["uid"]}】的抽卡记录。博士是没有在阿米娅这里获取过抽卡记录吗？如果是没有获取过的话，需要先获取一遍才能强制更新哦！"
    ),JSON_UNESCAPED_UNICODE);
    http_response_code(400);
    die;
}
// 服务器现有文件
$originFile = json_decode(file_get_contents($filePath),true);
// 新获取的文件
$forceUpdateFile = array();
// 获取最大页数
$getMaxPages = 15;
for ($i = 1;$i <= $getMaxPages;$i++) {
    $forceUpdateFile[] = json_decode(file_get_contents("https://ak.hypergryph.com/user/api/inquiry/gacha?page={$i}&token={$gachaToken["encode"]}"),true);
}
unset($i);
// 方舟API返回的数据中第一次抽卡时间
$firstGachaTime = 0;
for ($i = $getMaxPages-1;$i >= 0;$i--){
    if ($forceUpdateFile[$i]["data"]["list"]){
        // 当前页有几个抽卡数据
        $count = count($forceUpdateFile[$i]["data"]["list"])-1;
        $firstGachaTime = $forceUpdateFile[$i]["data"]["list"][$count]["ts"];
        $forceUpdateFile = array_slice($forceUpdateFile,0,$i+1);
        break;
    }
}
unset($count,$i);
$originFileCount = count($originFile)-2;
// 数组裁切点
$cutPoint = 0;
for ($i = 0;$i < $originFileCount;$i++) {
    if ($originFile[$i]["time"] < $firstGachaTime){
        $cutPoint = $i;
        break;
    }elseif ($i === $originFileCount-1){// 修复当强制更新获取到的数据与现有数据相同时不会删除原数据的BUG
        $cutPoint = $originFileCount;
    }
}
// 删除重复部分
$originFile = array_slice($originFile,$cutPoint);

// 抽卡API返回的数据有几条（获取到了多少页
$maxPage = count($forceUpdateFile);
// 遍历 页数
for ($i = $maxPage-1;$i >= 0;$i--){
    // 本页抽了多少次(十连和单抽都算一次)
    $for_gacha_num = count($forceUpdateFile[$i]['data']['list']);
    // 遍历 本页面的每一次抽卡
    for ($ii = $for_gacha_num-1;$ii >= 0;$ii--){
        // 十连还是单抽
        $for_gacha_chars_num = count($forceUpdateFile[$i]['data']['list'][$ii]['chars']);

        // 判断是十连还是单抽
        if ($for_gacha_chars_num > 1){
            // 遍历 十连的每一抽
            for ($iii = 0;$iii < $for_gacha_chars_num;$iii++){// 此时改为从0开始遍历（对应游戏中的十连每一抽的展示顺序）
                // 每一个干员的临时存储
                $gacha_list = array();
                $gacha_list['time'] = $forceUpdateFile[$i]['data']['list'][$ii]['ts'];// 抽取时间
                $gacha_list['name'] = $forceUpdateFile[$i]['data']['list'][$ii]['chars'][$iii]['name'];// 干员名
                $gacha_list['rarity'] = $forceUpdateFile[$i]['data']['list'][$ii]['chars'][$iii]['rarity']+1;// 干员稀有度
                $gacha_list['pool'] = $forceUpdateFile[$i]['data']['list'][$ii]['pool'];// 卡池名
                $gacha_list['isNew'] = $forceUpdateFile[$i]['data']['list'][$ii]['chars'][$iii]['isNew'];// 新干员？
                // 添加到输出数组的前面
                array_unshift($originFile,$gacha_list);
            }
            unset($iii);
        }else {
            // 单抽
            $gacha_list = array();
            $gacha_list['time'] = $forceUpdateFile[$i]['data']['list'][$ii]['ts'];// 抽取时间
            $gacha_list['name'] = $forceUpdateFile[$i]['data']['list'][$ii]['chars']['0']['name'];// 干员名
            $gacha_list['rarity'] = $forceUpdateFile[$i]['data']['list'][$ii]['chars']['0']['rarity']+1;// 干员稀有度
            $gacha_list['pool'] = $forceUpdateFile[$i]['data']['list'][$ii]['pool'];// 卡池名
            $gacha_list['isNew'] = $forceUpdateFile[$i]['data']['list'][$ii]['chars']['0']['isNew'];// 新干员？
            // 添加到输出数组的前面
            array_unshift($originFile,$gacha_list);
        }
    }
    unset($ii);
}
unset($i);
// 输出
if (file_put_contents($filePath,json_encode($originFile,JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT))){
    echo json_encode(array(
        "status" => true,
        "msg" => "强制覆盖更新成功",
        "moreInfo" => array(
            "forceUpdateFile" => $forceUpdateFile,
            "firstGachaTime" => $firstGachaTime,
            "originFile" => $originFile,
            "cutPoint" => $cutPoint
        )
    ),JSON_UNESCAPED_UNICODE);
}